package com.example.health_life.converter;

import com.example.health_life.dao.User;
import com.example.health_life.dto.UsersDTO;
import java.time.Instant;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;

public class UserConverter {
    public static UsersDTO converterUsers(User user) {
        //将数据库对象转变为DTO对象（前端展示的部分）
        UsersDTO usersDTO = new UsersDTO();
        usersDTO.setId(user.getId());
        usersDTO.setUsername(user.getUsername());
        usersDTO.setNickname(user.getNickname());
        usersDTO.setAvatar(user.getAvatar());
        usersDTO.setGender(user.getGender());
        usersDTO.setAddress(user.getAddress());
        usersDTO.setPhone(user.getPhone());
        usersDTO.setToken(user.getToken());
        usersDTO.setStatus(user.getStatus());

        // 新增微信登录相关字段转换
        usersDTO.setOpenid(user.getOpenid());
        usersDTO.setUnionid(user.getUnionid());
        usersDTO.setSessionKey(user.getSessionKey());
        usersDTO.setWxAvatar(user.getWxAvatar());
        usersDTO.setWxNickname(user.getWxNickname());
        usersDTO.setWxGender(user.getWxGender());
        usersDTO.setLoginType(user.getLoginType());
        
        // 转换最后登录时间
        if (user.getLastLoginTime() != null) {
            usersDTO.setLastLoginTime(user.getLastLoginTime().toString());
        }

        return usersDTO;
    }

    public static User converterUsersDTO(UsersDTO usersDTO) {
        User user = new User();

        user.setUsername(usersDTO.getUsername());
        user.setNickname(usersDTO.getNickname());
        user.setAvatar(usersDTO.getAvatar());
        user.setGender(usersDTO.getGender());
        user.setAddress(usersDTO.getAddress());
        user.setPhone(usersDTO.getPhone());
        user.setToken(usersDTO.getToken());
        if (usersDTO.getStatus() != null) {
            user.setStatus(usersDTO.getStatus());
        } else {
            user.setStatus((byte) 1);
        }

        // 新增微信登录相关字段转换
        user.setOpenid(usersDTO.getOpenid());
        user.setUnionid(usersDTO.getUnionid());
        user.setSessionKey(usersDTO.getSessionKey());
        user.setWxAvatar(usersDTO.getWxAvatar());
        user.setWxNickname(usersDTO.getWxNickname());
        user.setWxGender(usersDTO.getWxGender());
        user.setLoginType(usersDTO.getLoginType() != null ? usersDTO.getLoginType() : (byte)1);
        
        // 设置默认值
        user.setRole((byte) 1);
        user.setCreateTime(Instant.now());
        user.setLastLoginTime(Instant.now());

        return user;
    }

    public static List<UsersDTO> converterUsersList(List<User> all) {
        List<UsersDTO> usersDTOList = new ArrayList<>();
        for (User user : all) {
            usersDTOList.add(converterUsers(user));
        }
        return usersDTOList;
    }
}
